第五章 面向接口

第五章 面向接口

一.duck typing 的概念

1.duck typing
2.java 中的类似代码

1
2
3
4
<R extends Ret riever>
String download(R r) {
return r . get ( "www. imooc. com") ;
}

传入的参数必须实现retriever接口
不是duck typing

3.go语言中的 duck typing
1).同时需要Readable,Appendable怎么办?(apache polyene)
2).同时具有python,c++的duck typing 的灵活性
3).又具有java的类型检查
即:具有接口组装,灵活性,类型检查

二.接口定义和实现

1.接口由使用者定义

1
2
3
4
5
6
7
Type Retriever interface {
Get(source string) string
}

func download(retriever Retriever) string {
return retriever.Get(“www.imooc.com”)
}

2.接口的实现是隐式的
3.只要实现接口里面的方法

三接口的值类型

1.接口变量里面有什么
接口变量(实现者的类型,实现者的指针) ,实现者的指针->实现者
1).接口变量自带指针

四.接口的组合